Electronic systems and circuits have made a significant contribution towards the advancement of modern society and are utilized in a number of applications to achieve advantageous results. Numerous electronic technologies such as digital computers, calculators, audio devices, video equipment, and telephone systems have facilitated increased productivity and reduced costs in analyzing and communicating data, ideas and trends in most areas of business, science, education and entertainment. Electronic systems designed to provide these benefits often include integrated circuits on a single substrate that provide a variety advantages over discrete component circuits. However, traditional design and manufacturing approaches for integrated circuits are often very complex and consume significant resources.
Electronic systems often rely upon a variety of components included in integrated circuits to provide numerous functions. Microcontrollers are one example of integrated circuit components with characteristics that are potentially useful in a variety of applications. For example, microcontrollers are typically reliable and relatively economical to produce. Microcontrollers have evolved since they were first introduced and have substantially replaced mechanical and electromechanical components in numerous applications and devices. However, while traditional mircontrollers have some characteristics that are advantageous they also tend to be limited in the number of applications in which any given microcontroller can be utilized.
Traditionally each microcontroller was custom designed precisely for a narrow range of applications with a fixed combination of required peripheral functionalities. Developing custom microcontroller designs with particular fixed peripherals is time and resource intensive, typically requiring separate and dedicated manufacturing operations for each different microcontroller (which is particularly expensive for small volume batches). Even if a microcontroller may suffice for more than one application, it is still difficult to select an appropriate microcontroller for a particular application. Determining which one of the different available particular microcontroller designs is best suited for a particular application is challenging. In addition, the unique aspects of the intended application often make it difficult to find an optimum microcontroller, usually necessitating a compromise between the convenience of using an existing microcontroller design and less than optimum performance. Even when a suitable microcontroller is found, subsequent changes to the application and new requirements placed on the application can lead to the need for a totally different microcontroller.
Application specific integrated circuits (ASICs) may appear to address some of the issues associated with finding a suitable microcontroller for a particular application, but they tend to present significant hurdles. ASICs can be problematic because they tend to require a sophisticated amount of design expertise and the obstacles of long development times, high costs, and large volume requirements still remain. To the extent some flexibility may be provided by the inclusion of gate arrays or other logic devices, the traditional approaches remain expensive and require a sophisticated level of design expertise. In addition traditional integrated circuit configurations and functionality are typically set during initial manufacture and are not readily adaptable to changing conditions in the field.
Traditional integrated circuits typically have a predetermined set configuration and functionality that do not conveniently facilitate dynamic changes, including those systems that may provide minimal flexibility at great expense. Typically, one set of components are included and set to perform a single function and a second set of components are required to perform another function. Most applications require the performance of a variety of different functions resulting in significantly increased resource commitments. Providing components dedicated to single functions often results in under utilization of those dedicated components. For example, numerous functions in a variety of applications are performed infrequently or intermittently and the valuable resources committed to these activities sit idle. In addition, applications often require functions to be performed sequentially with second group of components dedicated to later activities sitting idle waiting on input from a first group of components dedicated to earlier activities and when the first group of components has finished they sit idle while the second group performs their dedicated function.
Similarly, the purpose of particular external ports or pins are rigidly set and traditional systems typically dedicate external ports or pins to very precise purposes. Accomplishing additional or different interactions with external components typically requires additional dedicated external ports or pins which consume valuable resources that are typically limited. The dedicated external ports or pins are also usually utilized infrequently and/or required to wait while activities proceed via other external ports or pins.
What is required is a system and method of dynamically reconfiguring a programmable integrated circuit in a convenient and efficient manner.